1. Field of the Invention
The present invention relates to a packet routing apparatus for routing packets via a pre-established connection in a node in a store and forward network.
2. Description of the Related Art
In recent years, a packet transmission technique has been applied to wide area networks such as the Internet, mobile communication networks, and others, which enables provisions of various data communication services through these wide area networks. As a result, the number of terminals receiving such data communication services has been rapidly increasing.
In the above-mentioned wide area networks, MPLS (Multiprotocol Label Switching) is being actively employed, the MPLS capable of not only setting and selecting a path but also high-speed traffic monitoring and controlling based on, for example, ‘a label used for identification’, which is added to an IP packet.
Further, MPLS is a major technique for realizing traffic engineering, VPN (Virtual Private Network), and so on, therefore, it has been actively standardized and improved.
FIG. 5 is a view showing a configuration example of a packet routing apparatus disposed in an MPLS network.
In FIG. 5, packet routing apparatuses 20-1, 20-2 are disposed as nodes in the MPLS network in which, for example, a connection oriented label path is formed when necessary.
The packet routing apparatus 20-1 is composed of the following elements:                duplex primary controlling parts 30-11, 30-12; and        a relay processing part 40-1 operating under the control of these primary controlling parts 30-11, 30-12 and connected to a preceding transmission section and a subsequent transmission section in the MPLS network.        
The primary controlling part 30-11 is composed of the following elements:                a main processor 31-11;        an external interfacing part 33-11, a nonvolatile memory 34-11, and a routing table 35-11 which are connected to an internal bus 32-11 together with the main processor 31-11; and        a branch interfacing part 36-11 connected to the aforesaid internal bus 32-11 and connected to a corresponding I/O terminal of the relay processing part 40-1 while being directly connected to a branch interfacing part 36-12 provided in the primary controlling part 30-12.        
Incidentally, since the configuration of the primary controlling part 30-12 is the same as the configuration of the primary controlling part 30-11, a common reference numeral with ‘2’ added thereto as a second suffix number is hereinafter assigned to each of corresponding components, and the explanation thereof will be omitted here.
The relay processing part 40-1 is composed of the following elements:                a submodule 41-1P connected to corresponding I/O terminals of the aforesaid branch interfacing parts 36-11, 36-12;        a submodule 41-1S connected to the other I/O terminals of the branch interfacing parts 36-11, 36-12;        a line accommodation part 42-1P operating under the control of the submodule 41-1P and connected to the aforesaid preceding transmission section; and        a line accommodation part 42-1S operating under the control of the submodule 41-1S and connected to the aforesaid subsequent transmission section.        
The submodule 41-1P is composed of the following elements:                a network processor 43-1P; and        a CAM 44-1P, a buffer memory 45-1P, and an I/O processor (IOP) 46-1P which are accessed by the network processor 43-1P.        
Incidentally, since the configuration of the submodule 41-1S is the same as the configuration of the submodule 41-1P, a common reference numeral with ‘S’ added thereto as a second suffix symbol is hereinafter assigned to each of corresponding components, and the explanation thereof will be omitted here.
In the conventional example as configured above, either one of the primary controlling parts 30-11, 30-12 (assumed to be denoted by the reference numeral ‘30-11’ here for simplicity) operates as an active system according to a system configuration externally designated and the other one stands by as a standby system to operate based on standby redundancy.
In the primary controlling part 30-11 operating as the active system, the main processor 31-11 obtains route selection information (a part or all thereof may be given as a default value such as an initial value or others) based on a predetermined routing protocol, stores the route selection information in the routing table 35-11 in a form, for example, shown in FIG. 6, and updates the route selection information based on this routing protocol or other protocols when necessary (FIG. 7 (1)).
Further, every time the contents of the routing table 35-11 are thus set or updated, the main processor 31-11 transfers updated information among these contents to both of the submodules 41-1P, 41-1S or either one of them via the branch interfacing part 36-11 (FIG. 7 (2)).
The parts in the submodule 41-1P (41-1S) cooperate with one another in the following manner.                The network processor 43-1P (43-1S) stores the route selection information thus notified by the main processor 31-11 in the CAM 44-1P (44-1S) (FIG. 7 (3)).        The line accommodation part 42-1P (42-1S) physically interfaces with the preceding transmission section and physically receives each packet given thereto via the preceding transmission section (FIG. 7 (4)).        The I/O processor 46-1P (46-1S) plays a leading role in storage management involved in a write operation onto a first storage area of the buffer memory 45-1P (45-1S), and stores thus received packets in the first storage area in sequence under the storage management (FIG. 7 (5)).        
Further, the network processor 43-1P (43-1S) plays a leading role in storage management involved in a read operation from the first storage area of the buffer memory 45-1P (45-1S), and reads the packets precedingly stored in this first storage area under the storage management based on first in first out to route each of the packets based on the following procedure.                It is judged whether or not a packet in question can be routed based on the route selection information stored in the CAM 44-1P (45-1S) (hereinafter, referred to as ‘routable/nonroutable judgment’) (FIG. 7 (6)).        This packet is delivered to the submodule 41-1S (41-1P) when the result of this routable/nonroutable judgment is true.        When, on the other hand, the result of the above routable/nonroutable judgment is false, the packet in question is temporarily held (hereinafter, referred to as a ‘primary preserved packet’) and this primary preserved packet is delivered to the main processor 31-11 via the branch interfacing part 36-11 and the internal bus 32-11 (FIG. 7 (7)).        
The main processor 31-11 obtains route selection information to be applied to the routing of this primary preserved packet (hereinafter, referred to as ‘additional route selection information’) out of the route selection information stored in the routing table 35-11 (FIG. 7 (8)), and delivers this additional route selection information to the submodule 41-1P (41-1S) via the internal bus 32-11 and the branch interfacing part 36-11 (FIG. 7 (9)).
In the submodule 41-1P (41-1S), the network processor 43-1P (43-1S) processes the following.                to store the delivered additional route selection information in a vacant area of the CAM 44-1P (44-1S) (FIG. 7 (10))        to deliver the aforesaid primary preserved packet to the submodule 41-1S (41-1P), considering the result of the aforesaid ‘routable/nonroutable judgment’ to be true (or after performing the ‘routable/nonroutable judgment’ again and identifying the result thereof as true) (FIG. 7 (11))        
Meanwhile, in the submodule 41-1S (41-1P), the network processor 43-1S (43-1P) plays a leading role in storage management involved in a write operation onto a second storage area of the buffer memory 45-1S (45-1P), and stores the packet delivered from the opposite submodule 41-1P (41-1S) in the aforesaid manner, in this second storage area in sequence under the storage management.
The I/O processor 46-1S (46-1P) processes the following.                to play a leading role in storage management involved in a read operation from the aforesaid second storage area, and sequentially read each packet stored in this second storage area based on first in first out under the storage management        to judge whether or not the packet in question can be routed based on the route selection information stored in the CAM 44-1S (44-1P) (hereinafter, referred to as ‘routable/nonroutable judgment’) (FIG. 7 (12))        to transmit this packet to the subsequent transmission section via the line accommodation part 42-1S (42-1P) when the result of this routable/nonroutable judgment is true (FIG. 7 (13))        when, on the other hand, the result of the above routable/nonroutable judgment is false, to temporarily maintain the packet in question (hereinafter, referred to as a ‘secondary preserved packet’) and to deliver this packet to the main processor 31-11 via the branch interfacing part 36-11 and the internal bus 32-11 (FIG. 7 (14))        
Incidentally, since the processing, which is performed by the main processor 31-11 according to thus delivered packet, of giving the additional route selection information is the same as the aforesaid processing (FIG. 7 (8), (9)) except that neither a supply source of this packet nor a destination of the additional route selection information is the network processor 43-1P (43-1S) but both of them are the I/O processor 46-1S (46-1P), the explanation thereof will be omitted here.
The parts in the submodule 41-1S (41-1P) cooperate with one another in the following manner.                The I/O processor 46-1S (46-1P) plays a leading role in the storage management involved in the read operation from the second storage area of the buffer memory 45-1S (45-1P) and reads, under the storage management, the secondary preserved packet delivered in the above-described manner (FIG. 7 (15)).        The line accommodation part 42-1S (42-1P) physically interfaces with the subsequent transmission section and transmits this secondary preserved packet to this subsequent transmission section (FIG. 7 (16)).        
Further, when some event occurs and the primary controlling part 30-11 as the active system is not allowed to operate (FIG. 7 (20)), the parts in the primary controlling part 30-12 which have been on standby as the standby system cooperate with one another in the following manner prior to the start of the aforesaid ‘operation as the active system’ according to the system configuration.                The main processor 31-12 provided in the primary controlling part 30-12 cooperates with an adjacent packet routing apparatus 20-2 based on a prescribed communication protocol via the relay processing part 20-1 and the subsequent transmission section to establish a new connection with this packet routing apparatus 20-2 (FIG. 7 (21)).        The main processor 31-12 obtains (generates) the route selection information consistent with this connection (FIG. 7 (22)) to store the route selection information in the routing table 35-12 and to deliver the route selection information to the submodule 41-1P (41-1S) via the branch interfacing part 36-12 (FIG. 7 (23)).        
In the submodule 41-1P (41-1S), the network processor 43-1P (43-1S) stores the delivered route selection information in the CAM 44-1P (44-1S) (FIG. 7 (24)).
Further, the main processor 31-12 cooperates with the line accommodation part 42-1P (42-1S) via the branch interfacing part 36-12 and the submodule 41-1P (41-1S) to control the operation of each of the parts in the primary controlling part 30-12 which is to operate as the active system in place of the primary controlling part 30-11 (FIG. 7 (25)).
Therefore, the duplex primary controlling parts (30-11, 30-12) (30-21, 30-22) provided in the packet routing apparatuses 20-1, 20-2 operate based on the standby redundancy to form and maintain a desired label path between these packet routing apparatuses 20-1, 20-2 with high reliability.
In the above-described conventional example, when some event occurs, requiring the updating of the system configuration, it takes a long time as several ten seconds to establish such connection, which enables the ‘primary controlling part which has been the standby system’ to start operation as the active system, because a formation of a new connection needs to be done in a complex way as described above.
Accordingly, even when the primary controlling parts 30-11, 30-12 are redundantly arranged, useless increase in transmission delay and degradation in service quality are caused in the process of updating the system configuration.
Moreover, in order to update the system configuration based on active redundancy on a TCP layer, it is generally necessary to constantly deliver between the active system and the standby system and refer to, as common information, not only the states of the system in which the updating is performed based on the TCP protocol but also various information associated with the states.
Frequent information exchange between these active system and standby system, however, excessively increases an average throughput required for controlling the communication protocol, thereby causing an unnecessarily dense connection between these systems (connection involving hardware and/or software), which highly possibly results in reliability degradation and great increase in running cost.
Further, the total reliability and transmission quality of the system greatly depend on the performance and throughput of a module realizing the TCP so that remaining bugs are not allowable, and a complex configuration and a scale increase have to be avoided as much as possible.
Incidentally, each duplex primary controlling parts' sharing all the resources can avoid or substantially reduce the aforesaid complex way of formation of the new connection, increase in the transmission delay, and degradation in the service quality.
The aforesaid processing performed by the primary controlling parts 30-11, 30-12, however, is realized as application systems operating under separate operating systems which are not provided with any supporting function of sharing the resource therebetween.
Further, in order to satisfy strict demands concerning both reduction in man-hour required for development and securing of reliability, for example, an existing module such as API (Application Program Interface) or the like such as ‘socket interface’ which easily realizes interprocess communication as well as an access to a file is actively incorporated into such application systems.
Consequently, the application of an operating system enabling the aforesaid delivery and sharing of the resources is technically possible but difficult in actual practice due to restriction on cost.